package com.wentao.thisConsume.controller;

import com.wentao.thisCommon.model.RequestBase;
import com.wentao.thisCommon.model.ResultBase;
import com.wentao.thisFacade.domain.reqeust.HotelDetailsRequest;
import com.wentao.thisFacade.domain.reqeust.UserNameUserIdRequest;
import com.wentao.thisFacade.domain.result.FileResult;
import com.wentao.thisFacade.domain.result.UploadResult;
import com.wentao.thisFacade.domain.result.VersionResult;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;


//文件上传
@FeignClient("WENTAO")
@RequestMapping(value = "/file")
@RestController
public interface FileConsume {
    /**
     * 上传文件到本地
     *
     * @param file       文件
     * @param uploadType 文件类型
     * @param uploadCode 公司code：companyCode
     * @return 上传结果
     * @throws Exception 异常信息
     */
    @PostMapping("/Upload")
    @ResponseBody
    ResultBase<UploadResult> upload(@RequestParam("file") MultipartFile file, @RequestParam("uploadType") String uploadType, @RequestParam("uploadCode") String uploadCode) throws Exception;

    /**
     * 上传文件到OSS
     *
     * @param file       文件
     * @param uploadType 文件类型
     * @param uploadCode 公司code：companyCode
     * @return 上传结果
     * @throws Exception 异常信息
     */
    @PostMapping("/UploadOSS")
    @ResponseBody
    ResultBase<UploadResult> uploadOSS(@RequestParam("file") MultipartFile file, @RequestParam("uploadType") String uploadType, @RequestParam("uploadCode") String uploadCode) throws Exception;

    /**
     * 通过companyCode查询公司上传文件详情
     *
     * @param entity 查询条件companyCode封装
     * @return 文件信息列表
     * @throws Exception 异常信息
     */
    @PostMapping("/HotelFiles")
    @ResponseBody
    ResultBase<List<FileResult>> hotelFiles(@RequestBody RequestBase<HotelDetailsRequest> entity) throws Exception;

    /**
     * 更新apk版本
     *
     * @param file              apk文件
     * @param versionName       版本name
     * @param updateContent     更新内容
     * @param compatibleMinCode 兼容最小版本code
     * @param compatibleMaxCode 兼容最大版本code
     * @param createBy          创建者
     * @return 保存的版本信息
     * @throws Exception 异常信息
     */
    @PostMapping(value = "/SaveAPK", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
    ResultBase<VersionResult> saveAPK(@RequestPart("file") MultipartFile file, @RequestParam("versionCode") Integer versionCode, @RequestParam("versionName") String versionName, @RequestParam("updateContent") String updateContent, @RequestParam("compatibleMinCode") Integer compatibleMinCode, @RequestParam("compatibleMaxCode") Integer compatibleMaxCode, @RequestParam("createBy") String createBy) throws Exception;

}
